﻿using static los2.class2;

namespace los2
{
    internal class class2
    {
        #region     知识回顾
        //类和对象
        //申明类
        //class Person
        //{
        //     特征——成员变量法
        //     行为——成员方法
        //     保护特征——成员属性
        //     
        //     构造函数和析构函数
        //     索引器
        //     运算符重载函数
        //     静态函数
        //}

        //实例化对象
        //Person 变量名;
        //Person 变量名 = null;
        //Person 变量名 = new Person();
        #endregion
        #region     知识点一   成员变量
        //基本规则
        //1.申明在类语句块中
        //2.用来描述对象的特征
        //3.可以是任意变量类型
        //4.数量不做限制
        //5.是否赋值根据需求来定
        public enum E_SexType
        {
            Man,
            Woman,
        }
        public class person
        {
            public string name;
            public int age;
            public E_SexType sex;

            //如果要在类里申明一个和自己相同类型的成员变量时
            //不能对它进行实例化（别new）
            public person Miku;
        }
        #endregion
        #region     知识点二   访问修饰符
        //public —— 公共的  自己（内部）和别人（外部）都能访问和使用
        //private —— 私有的 自己（内部）才能访问使用 不写 默认为private
        //protected —— 保护的 自己（内部）和 子类 才能访问和使用
        //目前决定类内部的成员 的 访问权限
        #endregion
        static void Main(string[] args)
        {
            Console.WriteLine("成员变量和访问修饰符");
            #region     知识点三   成员变量的使用和初始值 
            person p = new person();
            //值类型来说 数字类型 默认值都是0  bool类型  默认false
            //引用类型的 null
            //看默认值小技巧
            Console.WriteLine(default(int));//0
            Console.WriteLine(default(bool));//false

            p.age = 10;
            Console.WriteLine(p.age);
            #endregion

            //总结
            //成员变量
            //描述特征
            //类中申明
            //赋值随意
            //默认值，值不相同
            //默认值，引用为null
            //任意类型
            //任意数量

            //访问修饰符
            //公共的、私有的、保护的

            #region     作业
            //1.定义一个人类(海)，有姓名，身高，年龄，家庭住址等特征
            //用人类创建若干个对象（写在下面了）
            Sea HB = new Sea();
            HB.name = "海绵宝宝";
            HB.age = 21;
            HB.homeAddress = "比奇堡裤头村章鱼哥隔壁";
            
            Sea PX = new Sea();
            PX.name = "派大星";
            PX.age = 22;
            PX.homeAddress = "比奇堡裤头村章鱼哥隔壁";

            //2.定义一个歌姬类，有名字，性别，代表作等特征，
            //用歌姬类创建至少两个歌姬
            Vocaloid Miku= new Vocaloid();
            Miku.name = "Hatsune Miku";
            Miku.sex = E_Sex.female;
            Miku.DZ = "甩葱歌";

            Vocaloid Teto = new Vocaloid();
            Teto.name = "Kasane Teto";
            Teto.sex = E_Sex.Chimera;
            Teto.DZ = "小小的我";

            //3.
            //Person p = new Person();
            //p.age = 10;
            //Person p2 = new Person();
            //p2.age = 20;
            //请问p.age为多少 ?
            //答：10

            //4.
            //Person p = new Person();
            //p.age = 10;
            //Person p2 = p;
            //p2.age = 20;
            //请问p.age为多少 ?
            //答：20

            //5.
            //Student s = new Student();
            //s.age = 10;
            //int age = s.age;
            //age = 20;
            //请问s.age为多少 ?
            //答：10

            //6.
            //Student s = new Student();
            //s.deskmate = new Student();
            //s.deskmate.age = 10;
            //Student s2 = s.deskmate;
            //s2.age = 20;
            //请问s.deskmate.age为多少 ?
            //答：20
            #endregion
        }
    }
    #region     第一题
    public class Sea
    {
        public string name;
        public int age;
        public string homeAddress;
    }
    #endregion
    #region      第二题
    public enum E_Sex
    {
        male,
        female,
        Chimera,
    }
    public class Vocaloid
    {
        public string name;
        public E_Sex sex;
        public string DZ;
    }
    #endregion
}
